////////////////////////////////////////////////catch errors////////////////////////////////////////////
const logManager=require("./Logs")
module.exports={
    _errorHandler:null,
    init:function(){
        process.stdin.setEncoding('utf8');
        process.stdin.on('readable',this.onStdInPut.bind(this));
        process.stdin.on('end', this.onStdInOver.bind(this));
        process.on('uncaughtException',this.onUncaughtException.bind(this)) //监听未捕获的异常
        process.on('unhandledRejection',this.onUnhandledRejection.bind(this))
    },
    setErrorHandler:function(errorHandler){
        this._errorHandler=errorHandler
    },
    onUncaughtException:function(err){
        var errString=err.stack;
        logManager.logE(errString);
        if(this._errorHandler)
            this._errorHandler(err)
    },
    onUnhandledRejection:function(err,promise){
        var errString=err.stack;
        // promise.resolve
        logManager.logE(errString);
        if(this._errorHandler)
            this._errorHandler(err)
    },
    onStdInPut:function(){
        try{
            var cmd=process.stdin.read()
            eval(cmd);
            logManager.logM("exe cmd:finish")
        }catch(e){
            logManager.logE(e)
        }
    },
    onStdInOver:function(){
        logManager.logW("inputEnd:"+process.stdin.read());
    }
}